﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.Reporting.WinForms;
using CalculoPreciosUnitarios.Logica.GestorObject.Articulo;
using CalculoPreciosUnitarios.Logica.GestorObject.CotizarArticulos;
using CalculoPreciosUnitarios.Logica.GestorBaseDeDatos.CotizarArticulos;

namespace CalculoPreciosUnitarios.Ventanas.Listados
{
    public partial class FReporte : Form
    {        
        private object miLista = new object();
        private string miRdlc = "";
        private string miNameDataSet = "";
        private byte _opcion = 0;

        public string DatosEmpresa { set; get; }
        public string CodigoArt { set; get; }
        public string DetalleArt { set; get; }
        public string CantidadArt { set; get; }
        public string DetalleInsumos { set; get; }
        public string DetalleManoDeObra { set; get; }
        public string DetalleGastosFijos { set; get; }
        public string DetalleRentabilidad { set; get; }
        public string DetalleIvaUnidad { set; get; }

        public string ValorSubTotal { set; get; }
        public string ValorInsumos { set; get; }
        public string ValorManoDeObra { set; get; }
        public string ValorGastosFijos { set; get; }
        public string ValorRentabilidad { set; get; }
        public string ValorPrecioNeto { set; get; }
        public string ValorUnidadNeta { set; get; }
        public string ValorIvaUnidad { set; get; }
        public string ValorUnidadFinal { set; get; }

      
        public CotizarArticulosDB CotizacionArticulo { set; get; }
        

        public FReporte()
        {
            InitializeComponent();            
        }

        public FReporte(object lista)
        {
            InitializeComponent();
            miLista = lista;          
        }

        public FReporte(object lista, string rdlc, string nameDataSet, byte opr)
        {
            InitializeComponent();
            miLista = lista;
            miRdlc = rdlc;
            miNameDataSet = nameDataSet;
            _opcion = opr;
        }

        private void FReporte_Load(object sender, EventArgs e)
        {
            switch (_opcion)
            {
                case 1:
                    //
                    //Limpiemos el DataSource del informe                    
                    //
                    rv.LocalReport.DataSources.Clear();
                    rv.LocalReport.ReportEmbeddedResource = miRdlc;

                    //
                    //Establezcamos la lista como Datasource del informe
                    //
                    Microsoft.Reporting.WinForms.ReportDataSource dataset = new Microsoft.Reporting.WinForms.ReportDataSource(miNameDataSet, miLista);
                    rv.LocalReport.DataSources.Add(dataset);
                    dataset.Value = miLista;

                    rv.LocalReport.Refresh();
                    rv.RefreshReport();

                    rv.SetDisplayMode(DisplayMode.PrintLayout);
                    rv.ZoomMode = ZoomMode.Percent;
                    //Seleccionamos el zoom. En este caso un 100%
                    rv.ZoomPercent = 50;
                    
                    break;
                case 2:
                    //
                    //Limpiemos el DataSource del informe y asignamos el informe a mostrar                  
                    //
                    rv.LocalReport.DataSources.Clear();
                    rv.LocalReport.ReportEmbeddedResource = miRdlc;
                    //
                    //Establezco los parámetros que enviaremos al reporte                    
                    //
                    ReportParameter[] parameters = new ReportParameter[18];
                    parameters[0] = new ReportParameter("ParameterDatosEmpresa", DatosEmpresa);
                    parameters[1] = new ReportParameter("ParameterCodigoArticulo", CodigoArt);
                    parameters[2] = new ReportParameter("ParameterDetalleArticulo", DetalleArt);
                    parameters[3] = new ReportParameter("ParameterCantidadArticulo", CantidadArt);

                    parameters[4] = new ReportParameter("ParameterDetalleInsumos", DetalleInsumos);
                    parameters[5] = new ReportParameter("ParameterDetalleManoDeObra", DetalleManoDeObra);
                    parameters[6] = new ReportParameter("ParameterDetalleGastosFijos", DetalleGastosFijos);
                    parameters[7] = new ReportParameter("ParameterDetalleRentabilidad", DetalleRentabilidad);
                    parameters[8] = new ReportParameter("ParameterDetalleIvaUnidad", DetalleIvaUnidad);


        //                    public string ValorSubTotal { set; get; }
        //public string ValoInsumos { set; get; }
        //public string ValorManoDeObra { set; get; }
        //public string ValoGastosFijosr { set; get; }
        //public string ValorRentabilidad { set; get; }
        //public string ValorPrecioNeto { set; get; }
        //public string ValorUnidadNeta { set; get; }
        //public string ValorIvaUnidad { set; get; }
        //public string ValorUnidadFinal { set; get; }

                    parameters[9] = new ReportParameter("ParameterValorSubTotal", ValorSubTotal);
                    parameters[10] = new ReportParameter("ParameterValorInsumos", ValorInsumos);
                    parameters[11] = new ReportParameter("ParameterValorManoDeObra", ValorManoDeObra);
                    parameters[12] = new ReportParameter("ParameterValorGastosFijos", ValorGastosFijos);
                    parameters[13] = new ReportParameter("ParameterValorRentabilidad", ValorRentabilidad);
                    parameters[14] = new ReportParameter("ParameterValorPrecioNeto", ValorPrecioNeto);
                    parameters[15] = new ReportParameter("ParameterValorUnidadNeta", ValorUnidadNeta);
                    parameters[16] = new ReportParameter("ParameterValorIvaUnidad", ValorIvaUnidad);
                    parameters[17] = new ReportParameter("ParameterValorUnidadFinal", ValorUnidadFinal);

                    //
                    //Enviemos la lista de parametros
                    //
                    rv.LocalReport.SetParameters(parameters);
                    //
                    //Establezcamos la lista como Datasource del informe
                    //
                    Microsoft.Reporting.WinForms.ReportDataSource dataset2 = new Microsoft.Reporting.WinForms.ReportDataSource(miNameDataSet, miLista);
                    rv.LocalReport.DataSources.Add(dataset2);
                    dataset2.Value = miLista;
                    //
                    //Hagamos un refresh al reportViewer
                    //
                    rv.RefreshReport();

                    rv.SetDisplayMode(DisplayMode.PrintLayout);
                    
                    rv.ZoomMode = ZoomMode.Percent;
                    //Seleccionamos el zoom. En este caso un 100%
                    rv.ZoomPercent = 50;

                    break;
                default:
                    return;
            }
        }

    }
}
